/*
 *  Copyright 2023 Collate.
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *  http://www.apache.org/licenses/LICENSE-2.0
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
import { EntityType } from 'enums/entity.enum';
import { Container } from 'generated/entity/data/container';
import { Dashboard } from 'generated/entity/data/dashboard';
import { Mlmodel } from 'generated/entity/data/mlmodel';
import { Pipeline } from 'generated/entity/data/pipeline';
import { Table } from 'generated/entity/data/table';
import { Topic } from 'generated/entity/data/topic';

export interface AssetSelectionModalProps {
  glossaryFQN: string;
  open: boolean;
  onCancel: () => void;
  onSave?: () => void;
}

export type AssetsUnion =
  | EntityType.TABLE
  | EntityType.PIPELINE
  | EntityType.DASHBOARD
  | EntityType.MLMODEL
  | EntityType.TOPIC
  | EntityType.CONTAINER;

export type MapPatchAPIResponse = {
  [EntityType.TABLE]: Table;
  [EntityType.DASHBOARD]: Dashboard;
  [EntityType.MLMODEL]: Mlmodel;
  [EntityType.PIPELINE]: Pipeline;
  [EntityType.CONTAINER]: Container;
  [EntityType.TOPIC]: Topic;
};
